/// <reference path="_variables.scss" />
/// <reference path="_functions.scss" />
/// <reference path="_mixins.scss" />

//
// Base styles
//

.alert {
  // scss-docs-start alert-css-vars
  --alert-bg: transparent;
  --alert-padding-x: #{$alert-padding-x};
  --alert-padding-y: #{$alert-padding-y};
  --alert-margin-bottom: #{$alert-margin-bottom};
  --alert-color: inherit;
  --alert-border-color: transparent;
  --alert-border: #{$alert-border-width} solid var(--alert-border-color);
  --alert-border-radius: #{$alert-border-radius};
  --alert-link-color: inherit;
  // scss-docs-end alert-css-vars

  position: relative;
  padding: var(--alert-padding-y) var(--alert-padding-x);
  margin-bottom: var(--alert-margin-bottom);
  color: var(--alert-color);
  background-color: var(--alert-bg);
  border: var(--alert-border);
  @include border-radius(var(--alert-border-radius));
}

// Headings for larger alerts
.alert-heading {
  // Specified to prevent conflicts of changing $headings-color
  color: inherit;
}

// Provide class for links that match alerts
.alert-link {
  font-weight: $alert-link-font-weight;
  color: var(--alert-link-color);
}


// Dismissible alerts
//
// Expand the right padding and account for the close button's positioning.

.alert-dismissible {
  padding-inline-end: $close-font-size + $alert-padding-x * 2;

  // Adjust close link position
  .btn-close,
  .close {
    position: absolute;
    top: 0;
    inset-inline-end: 0;
    z-index: 2;
    padding-block: calc(var(--alert-padding-y) * 1);
    padding-inline: var(--alert-padding-x);
    height: calc(1em * #{$line-height-base}); // Center vertically if only 1 line exists
  }
}


// Alternate styles
//
// Generate contextual modifier classes for colorizing the alert.

@each $state in map-keys($theme-colors) {
  .alert-#{$state} {
    --alert-base-rgb: var(--#{$state}-rgb);
    --alert-color: var(--#{$state}-text-emphasis);
    --alert-bg: var(--#{$state}-bg-subtle);
    --alert-border-color: var(--#{$state}-border-subtle);
    --alert-link-color: var(--#{$state}-text-emphasis);
  }
}
